package com.zang.blogz.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.zang.blogz.dto.SocialTokenDTO;
import com.zang.blogz.dto.SocialUserInfoDTO;
import com.zang.blogz.enmus.LoginTypeEnum;
import com.zang.blogz.entity.UserAuth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zang.blogz.model.input.ro.AdminRegisterRO;
import com.zang.blogz.model.input.ro.QQLoginRO;
import com.zang.blogz.model.output.UserInfoVO;
import com.zang.blogz.result.Result;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 朵橙i
 * @since 2022-06-17
 */
public interface UserAuthService extends IService<UserAuth> {

    /**
     * 登录
     * @param username 用户名
     * @param pwd 密码
     * @return 登录个人信息
     */
    Result<UserInfoVO> login(String username, String pwd) throws Exception;

    /**
     * 退出登录
     * @return
     */
    Result<String> out();

    /**
     * 获得注册验证码
     * @param email
     */
    Result<String> getVerificationCode(String email);

    /**
     * 用户注册
     * @param adminRegisterRo
     * @return
     */
    Result<String> adminRegister(AdminRegisterRO adminRegisterRo) throws Exception;

    /**
     * 获取用户账号
     *
     * @return {@link UserAuth} 用户账号
     */
    UserAuth getUserAuth(LoginTypeEnum loginTypeEnum, SocialUserInfoDTO socialUserInfoDTO);

    /**
     * QQ登录
     * @param qqLoginRO
     * @return
     */
    Result<UserInfoVO> qqLogin(QQLoginRO qqLoginRO);

    /**
     * gitee登录
     * @param code
     * @return
     */
    Result<UserInfoVO> giteeLogin(String code);
}
